<template>
  <DetailsFormBox :title="dataInfo?.table?.title" :type="data.type" :form="data.form" :btns="[
    {
      title: '重置',
      icon: '',
      type: '',
      click: getForm,
    },
    {
      title: '保存',
      icon: '',
      type: 'primary',
      click: (form: any) => {
        saveBtn(form)
      },
    },
  ]" :loading="data.loading" :json="dataInfo">
    <template #default="{ form }">
      <div class="formMain">
        <ElFormItemBox label="工艺编号" :prop="`code`">
          <ElInputBox :data="form.code" disabled placeholder="系统自动生成" />
        </ElFormItemBox>
        <ElFormItemBox label="工艺名称" :prop="`name`" isRules>
          <ElInputBox :data="form" dataName="name" />
        </ElFormItemBox>
        <ElFormItemBox label="需要领料" :prop="`isGet`">
          <ElSwitchBox :data="form" dataName="isGet" />
        </ElFormItemBox>
        <ElFormItemBox label="需要文件" :prop="`isFile`">
          <ElSwitchBox :data="form" dataName="isFile" />
        </ElFormItemBox>
        <ElFormItemBox label="文件类型" :prop="`fileCode`" v-if="form.isFile">
          <ElRadioBox :data="form" dataName="fileCode" :options="data.fileCodes" />
        </ElFormItemBox>
        <ElFormItemBox label="排序" :prop="`indexNumber`">
          <ElNumberBox :data="form" dataName="indexNumber" />
        </ElFormItemBox>
        <ElFormItemBox label="备注" :prop="`remarks`">
          <ElInputBox :data="form" dataName="remarks" type="textarea" />
        </ElFormItemBox>
      </div>
    </template>
  </DetailsFormBox>
</template>
<script setup lang="ts">
import { useListComponent } from '../pageTs'; // 引入逻辑
const { dataInfo } = useListComponent();
import { reactive, onMounted, getCurrentInstance } from 'vue';
const { proxy } = getCurrentInstance() as any;
const data = reactive({
  loading: false,
  loadingMsg: '',
  type: '2',
  form: {
    id: "", // 获取或设置主键。
    code: "", // 获取或设置编码。
    name: "", // 获取或设置工艺名称。
    deviceCode: "", // 获取或设置设备编码。
    indexNumber: 1000, // 获取或设置排序号。
    isDisable: 0, // 获取或设置是否禁用 0 未禁用 1 已禁用。
    isDelete: 0, // 获取或设置是否删除 0 未删除 1 已删除。
    isFile: false, // 是否需要文件 true 需要 false 不需要
    isMain: false, // 是否需要主料 true 需要 false 不需要
    isGet: false, // 是否需要领料 true 需要 false 不需要
    isSubMain: false, // 是否需要辅料 true 需要 false 不需要
    createTime: "", // 获取或设置创建时间。
    createor: "", // 获取或设置创建人。
    uploadTime: "", // 获取或设置修改时间。
    uploador: "", // 获取或设置更新人。
    deleteTime: "", // 获取或设置删除时间。
    deleteor: "", // 获取或设置删除人员。
    remarks: "", // 备注。
    codeInt: 0 // code对应的数
  },
  fileCodes: []
});
import { useRoute } from 'vue-router';
// 获取当前路由对象
const route = useRoute();
// 文件列表
const getProductCraftsFiles = () => {
  proxy.$api.ProductCraft.GetProductCraftsFileList().then((res: any) => {
    data.fileCodes = res.map((el: any) => ({
      label: el.name,
      value: el.code,
    }));
  });
};

import { sendMsg } from '@/utils/crossTagMag.ts';
const saveBtn = (form: any) => {
  let _form: any = {
    code: form.code,
    id: form.id,
    fileCode: form.isFile ? form.fileCode : '',
    isFile: form.isFile,
    isGet: form.isGet,
    name: form.name,
    remarks: form.remarks,
    indexNumber: form.indexNumber,
  }
  if (form.id) {
    proxy.$api.ProductCraft.UpdateProductCraft(_form)
      .then((res: any) => {
        _sun()
      })
      .catch(() => { });
  } else {
    proxy.$api.ProductCraft.AddProductCraft({
      ..._form,
    })
      .then((res: any) => {
        _sun()
      })
      .catch(() => { });
  }

  function _sun() {
    proxy.$message('保存成功')
    sendMsg('save', true);
    // getForm()
    window.close();
  }
};
const getForm = () => {
  let _query: any = route.query
  if (_query.id) {
    proxy.$api.ProductCraft.GetSingleProductCraft({
      queryBy: 1,//获取数据方式：1通过主键；2通过唯一识别码	
      queryValue: _query.id,//获取数据传递的查询参数值（主键ID或唯一识别码）
    })
      .then((res: any) => {
        proxy.$message('获取成功')
        data.form = {
          ...res,
          isGet: !res.isGet,
          isFile: !res.isFile,
          fileCode: _query.fileCode
        }
      })
      .catch(() => {
      });
  }

};

onMounted(() => {
  getForm();
  getProductCraftsFiles();
});
</script>
